package edu.erpan.bl.bean.administracion;

import java.util.List;

import javax.ejb.Remote;

import edu.erpan.bl.entities.administracion.Modulo;
import edu.erpan.bl.entities.administracion.Rol;
import edu.erpan.util.entityManager.exceptions.PersistException;
import edu.erpan.util.entityManager.exceptions.QueryException;

/**
 * 
 * Permite admisnitrar la informacion de los roles de los usuarios
 * 
 * @author Jeison
 * @date 13/03/2013
 *
 */

@Remote
public interface AdministracionInterfazUsuarioBeanRemote {
	
	/**
	 * Consulta todos los diferentes roles registrados en el sistema
	 * 
	 * @return
	 * @throws QueryException
	 *
	 * @author Jeison
	 * @date 13/03/2013
	 */
	List<Rol> consultarRoles() throws QueryException;
	
	/**
	 * Consulta todos los diferentes modulos registrados en el sistema
	 * @return
	 * @throws QueryException
	 *
	 * @author Jeison
	 * @date 13/03/2013
	 */
	List<Modulo> consultarModulos()throws QueryException;
	
	
	/**
	 * Consulta un rol dados los paremetros de busqueda
	 * 
	 * @param rol
	 * @return
	 * @throws QueryException
	 *
	 * @author Jeison
	 * @date 13/03/2013
	 */
	Rol consultarRol(Rol rol) throws QueryException;
	
	/**
	 * Consulta un modulo dados los paremetros de busqueda
	 * 
	 * @param rol
	 * @return
	 * @throws QueryException
	 *
	 * @author Jeison
	 * @date 13/03/2013
	 */
	Modulo consultarModulo(Modulo modulo) throws QueryException;
	
	/**
	 * Registra un rol en el sistema
	 * 
	 * @param rol
	 * @throws PersistException
	 *
	 * @author Jeison
	 * @date 13/03/2013
	 */
	void guardarRol(Rol rol) throws PersistException;
	
	
	/**
	 * Editala informacion de un rol en el sistema
	 * 
	 * @param rol
	 * 
	 * @author Jeison
	 * @throws PersistException 
	 * @throws QueryException 
	 * @date 13/03/2013
	 */
	void editarRol(Rol rol) throws QueryException;

	
	/**
	 * Registra un modulo en el sistema
	 * 
	 * @param modulo
	 * @throws PersistException
	 *
	 * @author Jeison
	 * @date 13/03/2013
	 */
	void guardarModulo(Modulo modulo) throws PersistException;
	
	
	/**
	 * Editala informacion de un modulo en el sistema
	 * 
	 * @param modulo
	 *
	 * @author Jeison
	 * @throws PersistException 
	 * @date 13/03/2013
	 */
	void editarModulo(Modulo modulo) throws PersistException;
}
